<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script type="text/javascript" src="../internal.js"></script>
    <script type="text/javascript" src="../../../jquery.js"></script>
    <script type="text/javascript" src="../../../bootstrap/bootstrap.js"></script>
    <link rel="stylesheet" href="../../../bootstrap/bootstrap.css">
    <link rel="stylesheet" href="../../../bootstrap/bootstrap-responsive.css">
    <style type="text/css">
        * {
            color: #838383;
            margin: 0;
            padding: 0
        }

        a {
            text-decoration: none;
        }

        .sqlopt a {
            color: #005580;
            text-decoration: none;
        }

        .sqlopt a:hover {
            text-decoration: underline;
        }

        html, body {
            font-size: 12px;
        }

        body {
            padding-left: 20px;
            padding-right: 20px;
        }
    </style>
</head>
<body>
<div id="tblwrap" style="padding-top:10px;">
    <table class="table table-striped table-bordered" style="margin-top:18px;margin-bottom: 0;">
        <thead>
        <tr>
            <th><span> 控件名称 ：</span><span class="label label-important">*</span></th>
            <th><span> 类型 ：</span></th>
        </tr>
        <tr>
            <td>
                <input id="itemName" type="text" placeholder="必填项" style="width:203px;"/>
            </td>
            <td>
                <select onchange="javascript:fnTypeChange(this.value);" style="width:209px;" id="itemType">
                    <optgroup label="----单行输入框----">
                        <option value="sys_date">当前日期，形如 1999-01-01</option>
                        <option value="sys_date_cn">当前日期，形如 2009年1月1日</option>
                        <option value="sys_date_cn_short3">当前日期，形如 2009年</option>
                        <option value="sys_date_cn_short4">当前年份，形如 2009</option>
                        <option value="sys_date_cn_short1">当前日期，形如 2009年1月</option>
                        <option value="sys_date_cn_short2">当前日期，形如 1月1日</option>
                        <option value="sys_time">当前时间</option>
                        <option value="sys_date">当前日期 [日历控件]</option>
                        <option value="sys_datetime">当前日期+时间 [日历控件]</option>
                        <option value="sys_week">当前星期中的第几天，形如 星期一</option>
                        <option value="sys_userid">当前用户id</option>
                        <option value="sys_realname">当前用户姓名</option>
                        <option value="sys_deptname">当前用户部门</option>
                        <!--option value="sys_realname_date">当前用户姓名+日期</option>
                        <option value="sys_realname_datetime">当前用户姓名+日期+时间</option>
                        <option value="sys_formname">表单名称</option>
                        <option value="sys_runname">工作名称/文号</option>
                        <option value="sys_rundate">流程开始日期</option>
                        <option value="sys_rundatetime">流程开始日期+时间</option>
                        <option value="sys_runid">流水号</option>
                        <option value="sys_autonum">文号计数器</option>
                        <option value="sys_ip">经办人ip地址</option>
                        <option value="sys_manager1">部门主管(本部门)</option>
                        <option value="sys_manager2">部门主管(上级部门)</option>
                        <option value="sys_manager3">部门主管(一级部门)</option-->
                        <!--option value="sys_sql">来自sql查询语句</option-->
                    </optgroup>
                    <!--optgroup label="----下拉菜单----">
                        <option value="sys_list_dept">部门列表</option>
                        <option value="sys_list_user">人员列表</option>
                        <option value="sys_list_pos">角色列表</option>
                        <option value="sys_list_prcsuser1">流程设置所有经办人列表</option>
                        <option value="sys_list_prcsuser2">本步骤设置经办人列表</option>
                        <option value="sys_list_manager1">部门主管(本部门)</option>
                        <option value="sys_list_manager2">部门主管(上级部门)</option>
                        <option value="sys_list_manager3">部门主管(一级部门)</option>

                    </optgroup-->
                </select>
            </td>
        </tr>
        </thead>
        <tbody id='itemAttr'>
        <tr>
            <th><span> 控件样式 ：</span></th>
            <th><span> 可见性 ：</span></th>
        </tr>
        <tr>
            <td>
                <div class="controls">
                    <div class="input-prepend input-append">
                        <span class="add-on">字体大小</span><input style="display:inline;width: 32px;" class="span2"
                                                               id="itemSize" size="1" type="text"><span class="add-on">px</span>
                        <span class="add-on">宽</span><input style="display:inline;width: 32px;" class="span2"
                                                            id="itemWidth" size="1" type="text"><span
                            class="add-on">px</span>
                    </div>
                </div>
            </td>
            <td>
                <label> <input id="hidden" type="checkbox"> 隐藏 </label>
            </td>
        </tr>
        </tbody>
        <tbody id="itemSql" style="display:none;">
        <tr>
            <th colspan="2"> SQL查询语句 ('号用`号替换) <span class="sqlopt" style="float:right"><a class="btn" title="SQL书写指导"
                                                                                           onclick="fnShowGuide();"
                                                                                           href="javascript:;"><i
                    class="icon-question-sign"></i></a>  <a class="btn" title="测试SQL语句" onclick="fnCheckSql(true);"
                                                            href="javascript:;"><i class="icon-play"></i></a></span>
            </th>
        </tr>
        <tr>
            <td colspan="2">
                <textarea style="width:440px;height: 45px;" id="txtSql" title="如宏控件类型选择来自SQL查询语句，则填写"></textarea>
            </td>
        </tr>
        </tbody>
    </table>
</div>
<!-- end tblwrap-->
<div style="display:none;margin-bottom: 27px;">
    <div class="page-header">
        <h3>SQL书写指导<span style="position: fixed;right: 20px;"><a href="javascript:;" title="回到控件属性页"
                                                                 onclick="fnShowGuide();" class="btn"><i
                class="icon-home"></i></a></span></h3>
    </div>
    <!--div>
        <div class="alert alert-error">
            <a class="close" data-dismiss="alert">×</a>
            <strong>注意！</strong> SQL语句中的单引号请用符号`替换（该符号在键盘TAB上方）。
        </div>
        <blockquote>
            <p>宏控件可以代替手工输入，实现根据用户指定要求进行自动取值，使得工作流的表单填写更加智能与方便，宏控件类型选择当前日期，点击【确定】，在表单上
            就生成了该控件，填写表单时就会自动填入当前日期了。另外宏控件也支持隐藏属性，对不需要在表单显示字段可以将其隐藏。宏控件支持来自SQL查询，语句，下面重点介绍一下。 </p>
        </blockquote>
        <p>来自SQL语句的宏控件，因其定义格式比较复杂，需要具备SQL语言的专业知识，并了解OA系统数据库结构，建议在技术支持人员指导下完成。</p><br/>
        <p>可以参照以下格式书写SQL语句：</p><br/>
        <strong>下拉菜单型语句如：</strong><br/><br/>
        <p>
            <code>SELECT name FROM book_category ORDER BY sort</code><br/><br/>
            该语句表示列出全部书籍的分类名，并按序号排序显示
        </p>
        <br/>
        <p>
            <strong>单行输入框语句如：</strong><br/><br/>
            <code>SELECT realname FROM common_member WHERE username = `gzzr`</code><br/><br/>
            该语句表示查询用户名为gzzr的用户的真实姓名<br/><br/>
        </p>
        <strong>目前，SQL语句中已支持以下宏变量，更加方便用户使用：</strong><br/><br/>
        <code>[sys_user_id]</code> 表示当前用户的用户ID<br/><br/>
        <code>[sys_dept_id]</code> 表示当前用户的部门ID<br/><br/>
        <code>[sys_pos_id]</code> 表示当前用户角色ID<br/><br/>
        <code>[sys_run_id]</code> 表示当前的工作流水号，可用于表单数据表的查询<br/><br/>
        <p>
            例如：<br/><br/>
            <code>SELECT realname FROM common_member WHERE uid=`[sys_user_id]`</code><br/><br/>
            此句表示查询当前用户的真实姓名
        </p>
        <br/>
        <p>
            <code>SELECT realname FROM common_member WHERE FIND_IN_SET(deptid,`[sys_dept_id]`)</code><br/><br/>
            此句表示查询当前部门所有用户的姓名
        </p>
        <br/>
        <p>
            <code>SELECT realname FROM common_membe WHERE deptid = `[sys_dept_id]` ORDER BY uid</code><br/><br/>
            此句表示查询当前部门所有用户的姓名，并按角色序号排序
        </p>
        <p>可以利用SQL语句查询系统代码设置中所设置的代码，实现下拉菜单根据代码定义动态变化：</p><br/><br/>
        例如：<br/><br/>
        <code>SELECT name FROM common_syscode WHERE number = `AREA` ORDER BY sort</code><br/><br/>
        <p>此句表示列出系统代码“地区”的全部值，“地区”的代码编号是“AREA”。</p>
    </div-->
</div>
<script type="text/javascript">
    var oNode = null;
    window.onload = function () {
        //如果是编辑控件
        if (UE.plugins['auto'].editdom) {
            oNode = UE.plugins['auto'].editdom;
            if (oNode.tagName == 'INPUT') {
                if (oNode.getAttribute('hide') == '1') {
                    $G('hidden').checked = true;
                }
            }
            $G('itemName').value = oNode.getAttribute('title');
            $G('itemType').value = oNode.getAttribute('datafld');
            $G('txtSql').value = oNode.getAttribute('datasrc');
            var sSizeFull = oNode.style.width;
            $G('itemWidth').value = sSizeFull.substr(0, sSizeFull.length - 2);//这里的substr是为了去掉末尾的'px'
            var sFontSize = oNode.style.fontSize;
            $G('itemSize').value = sFontSize.substr(0, sFontSize.length - 2);//这里的substr是为了去掉末尾的'px'
        }
        fnTypeChange($G('itemType').value);
    }

    function fnShowGuide() {
        $('#tblwrap').slideToggle().siblings().slideToggle();
    }
    function fnTypeChange(sV) {
        var aAllowItem = ['sys_list_dept', 'sys_list_user', 'sys_list_pos',
            'sys_list_prcsuser1', 'sys_list_prcsuser2', 'sys_list_manager1',
            'sys_list_manager2', 'sys_list_manager3', 'sys_list_sql'];
        if (sV == "sys_sql" || sV == "sys_list_sql") {
            $('#itemSql').show().siblings('tbody').hide();
        } else {
            $('#itemSql').hide().siblings('tbody').show();
        }
        if ($.inArray(sV, aAllowItem) == -1) {
            $('#hidden').removeAttr('disabled').parent().css('cursor', 'default');
        } else {
            $G('hidden').checked = false;
            $('#hidden').attr('disabled', 'disabled').parent().css('cursor', 'not-allowed');
        }
    }
    function fnCheckSql(bCheckFlag) {
        //检测单引号和回车
        var sExpr1 = /\n/g;
        var sExpr2 = /'/g;
        var sSql = $G("txtSql").value;
        if (sSql.match(sExpr1) || sSql.match(sExpr2)) {
            var sMsg = "您的sql语句中存在单引号和回车，不符合要求，是否进行替换？";
            if (window.confirm(sMsg)) {
                sSql = sSql.replace(sExpr1, "");
                sSql = sSql.replace(sExpr2, "`");
                $G("txtSql").innerHTML = sSql;
            } else {
                return (false);
            }
        }
        if (bCheckFlag) {
            var oDate = new Date();
            var sUrl = parent.getItemUrl + '&sql=' + sSql;
            ajax.request(sUrl, {
                timeout: 60000, onsuccess: function (xhr) {
                    try {
                        alert(xhr.responseText);
                    } catch (e) {
                        alert(' 测试SQL正确性时遇到问题，请联系OA管理员处理 ');
                        return false;
                    }
                }, onerror: function () {
                    alert('Request TimeOut');
                }
            });
        }
        return (true);
    }
    dialog.oncancel = function () {
        if (UE.plugins['auto'].editdom) {
            delete UE.plugins['auto'].editdom;
        }
    };
    dialog.onok = function () {
        if ($G('itemName').value == '') {
            alert('控件名称不能为空');
            $G('itemName').focus();
            return false;
        } else if ($G('itemType').value == 'sys_sql' || $G('itemType').value == 'sys_list_sql') {
            if ($G('txtSql').value == '') {
                alert('SQL查询语句不能为空');
                return false;
            } else if (!fnCheckSql(false)) {
                return false;
            }
        }
        if (!oNode) {
            var sUrl = parent.getItemUrl;
            var nItemId = null;
            ajax.request(sUrl, {
                timeout: 60000, onsuccess: function (xhr) {
                    try {
                        nItemId = xhr.responseText;
                        if ($G('itemType').value.indexOf('sys_list') < 0) {
                            oNode = document.createElement("input");
                            oNode.setAttribute('type', 'text');
                            oNode.setAttribute('value', '{macro}');
                        } else {
                            oNode = document.createElement("select");
                            var objOption = new Option('{macro}', '');
                            oNode.options[oNode.options.length] = objOption;
                        }
                        oNode.setAttribute('title', $G('itemName').value.replace("\"", "&quot;"));
                        oNode.setAttribute('name', 'data_' + nItemId);
                        oNode.setAttribute('class', 'auto');
                        oNode.setAttribute('className', 'auto');
                        oNode.setAttribute('datafld', $G('itemType').value);
                        oNode.setAttribute('datasrc', $G('txtSql').value);
                        if ($G('hidden').checked) {
                            oNode.setAttribute('hide', '1');
                        } else {
                            oNode.setAttribute('hide', '0');
                        }
                        if ($G('itemSize').value != '') {
                            oNode.style.fontSize = $G('itemSize').value + 'px';
                        }
                        if ($G('itemWidth').value != "") {
                            oNode.style.width = $G('itemWidth').value + 'px';
                        }
                        editor.execCommand('insertHtml', oNode.outerHTML);
                        return true;
                    } catch (e) {
                        alert('插入控件出错，请联系OA管理员解决 ');
                        return false;
                    }
                }, onerror: function () {
                    alert('Request TimeOut');
                }
            });
        } else {
            var nItemId = oNode.getAttribute('name').substr(5);
            var oNewNode = null;
            domUtils.remove(oNode, false);  //删除当前控件，再创建一个新的
            if ($G('itemType').value.indexOf('sys_list') < 0) {
                oNewNode = document.createElement("input");
                oNewNode.setAttribute('type', 'text');
                oNewNode.setAttribute('value', '{macro}');
            } else {
                oNewNode = document.createElement("select");
                var objOption = new Option('{macro}', '');
                oNewNode.options[oNewNode.options.length] = objOption;
            }
            oNewNode.setAttribute('title', $G('itemName').value.replace("\"", "&quot;"));
            oNewNode.setAttribute('name', 'data_' + nItemId);
            oNewNode.setAttribute('class', 'auto');
            oNewNode.setAttribute('className', 'auto');
            oNewNode.setAttribute('datafld', $G('itemType').value);
            oNewNode.setAttribute('datasrc', $G('txtSql').value);
            if ($G('hidden').checked) {
                oNewNode.setAttribute('hide', '1');
            } else {
                oNewNode.setAttribute('hide', '0');
            }
            if ($G('itemSize').value != '') {
                oNewNode.style.fontSize = $G('itemSize').value + 'px';
            }
            if ($G('itemWidth').value != "") {
                oNewNode.style.width = $G('itemWidth').value + 'px';
            }
            editor.execCommand('insertHtml', oNewNode.outerHTML);
            delete UE.plugins['auto'].editdom; //使用后清空这个对象，变回新增模式
        }
    };
</script>
</body>
</html>
